package com.aust.annotation;

public class Test4 {
    public static void main(String[] args) {
        /**
         * 1. `clazz.getAnnotation(...)` 是反射方法；
         * 2. JVM 接收到反射请求，查找 class 文件中注解信息；
         * 3. 构造一个 **实现了 MyAnno 接口的动态代理对象**；
         * 4. 调用 `anno.name()` → 触发代理的 `invoke()` 方法；
         * 5. 返回 name 属性的值："Tom"
         */
        Class<Test1> test1Class = Test1.class;
        if (test1Class.isAnnotationPresent(MyAnno.class)) {
            MyAnno annotation = test1Class.getAnnotation(MyAnno.class);
            System.out.println(annotation);
            System.out.println(annotation.name());
        }
    }
}
